//
//  HMBaseTableViewController.swift
//  HMWeiBo
//
//  Created by Apple on 16/7/28.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit
import SVProgressHUD
/*
    1.创建好基类之后,把多余的代码都删掉
*/

// 一定要把这2个方法也实现了,不然也会报错

// swift里不支持多继承
class HMBaseTableViewController: UITableViewController ,HMVisitorViewDelegagte{
  
    // 定义成属性,供子类去调用
    let visitor = HMVisitorView()
    
    var token: String = HMLoginViewModel.shareInstance.access_token ?? ""
    
    override func loadView() {
        
        // 登录的时候,应该显示 UITableView
        // 没有登录显示访客视图
        // HMLoginViewModel.shareInstance.access_token != nil
        if HMLoginViewModel.shareInstance.isLogin {
            
            super.loadView()
            
        } else {
            
            // 这么写,不用指定frame,新创建的VIew会填充满控制器
            view = visitor
            
            // 调用代理: 设置代理,遵守代理协议,实现代理方法
            // 一旦设置了代理,就要去遵守协议,不然会报错
            visitor.delegate = self
            
            setupNav()
            
        }
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()

      
    }

    // MARK:-- 创建一个方法,来实现nav的左右2各按钮
    // 建议方法都写成私有的,如果需要public的时候,再修改
    // 有些私有方法,在运行时的时候要特殊处理一下
    private func setupNav(){
    
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "didRegisterMethod")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: "login")
        
       
        
    }
    // 在运行时的时候,去点击button/发送通知 等交互方法,设置成private的话,系统会找不到这个方法,我们可以用 @objc,帮助系统来查找这个方法
    @objc private func login(){
        
        printLog("有些私有方法,在运行时的时候要特殊处理一下")
        
    }
    
    //MARK:-- 加载数据忙的方法
    // 重载
    func showLoadingView(message: String){
        
        SVProgressHUD.showErrorWithStatus(message)
        
    }
    
    func showLoadingView(){
        
        // 如果 show() 和 showErrorWithStatus(message) 显示的样式一样的话
         SVProgressHUD.show()
//        self.showLoadingView("")
        
    }
    
    func dismissLoadingView(){
        
        SVProgressHUD.dismiss()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    
}

//MARK:-- 实现代理方法
extension HMBaseTableViewController{
    
    func didLoginMethod() {
        
        printLog("回调")
        
    }
    
    func didRegisterMethod() {
        printLog("注册回调")
        
        let login = HMLoginViewController()
        
        let nav = UINavigationController(rootViewController: login)
        
        presentViewController(nav, animated: true) { () -> Void in
            
        }
        
    }
    
}
